home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / ui_remote.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  14.2 KB  |  438 lines

  1. /*****************************************************************************
  2.   FILE           : ui_remote.c
  3.   SHORTNAME      : remote.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : creates the widget containing all controls of the kernal.
  7.   NOTES          : is called only during initialisation
  8.  
  9.   AUTHOR         : Tilman Sommer
  10.   DATE           : 20.7.1990
  11.  
  12.   CHANGED BY     : Michael Vogt, Guenter Mamier
  13.   IDENTIFICATION : @(#)ui_remote.c    1.17 4/21/94
  14.   SCCS VERSION   : 1.17 
  15.   LAST CHANGE    : 4/21/94  
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.              
  19. ******************************************************************************/
  20.  
  21.  
  22. #include <stdio.h>
  23.  
  24. #include "ui.h"
  25.  
  26. #include <X11/Xaw/Form.h>
  27. #include <X11/Xaw/Box.h>
  28. #include <X11/Xaw/Cardinals.h>
  29. #include <X11/Xaw/SimpleMenu.h>
  30. #include <X11/Xaw/SmeBSB.h>
  31. #include <X11/Xaw/SmeLine.h>
  32. #include <X11/Xaw/List.h>
  33.  
  34. #include "ui_remoteP.h"
  35. #include "ui_xWidgets.h"
  36. #include "ui_lists.h"
  37. #include "ui_mainP.h" /* ui_editPopup() */
  38. #include "ui_infoP.h" /* ui_info_displayList() */
  39. #include "ui_utilP.h" /* ui_cutTrailingZeros() */
  40. #include "ui_fileP.h"
  41.  
  42. #ifdef MASPAR_KERNEL
  43. #include "ui_maspar.h"  /* MASPAR Kernel Interface */
  44. #endif
  45.  
  46. #include "ui_remote.ph"
  47.  
  48.  
  49. /*****************************************************************************
  50.   FUNCTION : ui_xCreateRemotePanel
  51.  
  52.   PURPOSE  : creates a form widget for user input of unit data
  53.   RETURNS  : void
  54.   NOTES    : some constants are used (see below) to get a relativ positioning
  55.              of the items. This is VERY useful after changings.
  56.  
  57.   UPDATE   :
  58. *****************************************************************************/
  59.  
  60. void ui_xCreateRemotePanel (Widget parent)
  61.  
  62. {
  63.     /* tabs for data fields and small buttons */
  64.  
  65.     static struct SimpleListType  listSiteFType; /* site list in
  66.                             f-type edit panel */
  67.     static struct SimpleListType  listSiteSite;  /* site list in
  68.                             site edit panel */
  69.     static struct SimpleListType  listLearnFunc;  /* func list */
  70.     static struct SimpleListType  listUpdateFunc; /* func list */
  71.     static struct SimpleListType  listInitFunc;   /* func list */
  72.  
  73.     Widget      stepLabel, learnLabel, updateLabel, learn2Label, pattLabel;
  74.     Widget      mButton, sButton, button, menu, entry, mItem, subpattLabel;
  75.     Widget      museButton;
  76.     Arg        args[10];
  77.     Cardinal    n;
  78.     int         i;
  79.     char        buf[20];
  80.  
  81.     int  fontWidth = 8;
  82.  
  83.     int  titelWidth  =  7 * fontWidth;
  84.     int  numberWidth =  7 * fontWidth;
  85.     int  nameWidth   = 10 * fontWidth;
  86.  
  87. /***************************************************************************/
  88.  
  89.     ui_remotePanel = 
  90.     XtCreateManagedWidget("rPanel", formWidgetClass, parent, NULL, ZERO);
  91.  
  92. /*****************************  UPDATING  *********************************/
  93.  
  94.     stepLabel =
  95.     ui_xCreateLabelItem("STEPS", ui_remotePanel,
  96.                titelWidth, NULL,     NULL);
  97.  
  98.     sprintf(buf,"%d",ui_numberOfSteps);
  99.     ui_numberOfStepsWidget =
  100.     ui_xCreateDialogItem("numberOfSteps", ui_remotePanel,
  101.                  buf, numberWidth,  stepLabel, NULL);
  102.  
  103.     sButton =
  104.     ui_xCreateButtonItem("multiStep", ui_remotePanel, 
  105.                  ui_numberOfStepsWidget, NULL);
  106.     XtAddCallback(sButton, XtNcallback, (XtCallbackProc) ui_rem_stepsProc, (caddr_t) TRUE);
  107.  
  108.     button =
  109.     ui_xCreateButtonItem("info", ui_remotePanel, sButton, NULL);
  110.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_getKernelInfo, NULL);
  111.  
  112.     button =
  113.     ui_xCreateButtonItem("init", ui_remotePanel, button, NULL);
  114.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_initNet, NULL);
  115.  
  116.     button =
  117.     ui_xCreateButtonItem("reset", ui_remotePanel, button, NULL);
  118.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_resetNet, NULL);
  119.  
  120.     sprintf(buf,"%d",ui_numberOfStepsDone);
  121.     ui_numberOfStepsDoneWidget =
  122.     ui_xCreateLabelItem(buf, ui_remotePanel, numberWidth, button, NULL);
  123.  
  124.     n = 0;
  125.     XtSetArg(args[n], XtNborderWidth, 1); n++;
  126.     XtSetArg(args[n], XtNinternalHeight, 3); n++;
  127.     XtSetArg(args[n], XtNinternalWidth , 4); n++;
  128.     XtSetValues(ui_numberOfStepsDoneWidget, args, n);
  129.  
  130. /*****************************  CYCLES  *********************************/
  131.  
  132.     learnLabel =
  133.     ui_xCreateLabelItem("CYCLES", ui_remotePanel,
  134.                titelWidth, NULL, stepLabel);
  135.  
  136.     sprintf(buf,"%d",ui_numberOfCycles);
  137.     ui_numberOfCyclesWidget =
  138.     ui_xCreateDialogItem("numberOfCycles", ui_remotePanel,
  139.                  buf, numberWidth,  learnLabel, stepLabel);
  140.  
  141.     button =
  142.     ui_xCreateButtonItem("single", ui_remotePanel, 
  143.                  ui_numberOfCyclesWidget, stepLabel);
  144.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_learnProc, (caddr_t) UI_LEARN_SINGLE);
  145.  
  146.     button =
  147.     ui_xCreateButtonItem("all", ui_remotePanel, sButton, stepLabel);
  148.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_learnProc, (caddr_t) UI_LEARN_ALL);
  149.  
  150.     button =
  151.     ui_xCreateButtonItem("stop", ui_remotePanel, button, stepLabel);
  152.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_stopProc,  NULL);
  153.  
  154.     button =
  155.     ui_xCreateButtonItem("test", ui_remotePanel, button, stepLabel);
  156.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_testProc, NULL);
  157.  
  158.     button =    
  159.         ui_xCreateToggleItem("shuffle", ui_remotePanel, NULL, 
  160.                 button, stepLabel);
  161.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_shuffleProc, NULL);
  162.     
  163.     button =
  164.     ui_xCreateMenuButtonItem("options", ui_remotePanel,
  165.                  button, stepLabel);
  166.  
  167.     menu = 
  168.     XtCreatePopupShell("menu", simpleMenuWidgetClass, button,
  169.                NULL, ZERO);
  170.  
  171. /*    mItem =
  172.     XtCreateManagedWidget("random weights", smeBSBObjectClass, 
  173.                   menu, NULL, ZERO);
  174.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_popupWeights, (caddr_t) UI_RANDOM);
  175. */          
  176.  
  177.  
  178.     mItem =
  179.     XtCreateManagedWidget("select update function", smeBSBObjectClass, 
  180.                   menu, NULL, ZERO);
  181.     sprintf(listUpdateFunc.msg,"Select update function");
  182.     listUpdateFunc.unitPtr  = NULL;
  183.     listUpdateFunc.widgetPtr= button;
  184.     listUpdateFunc.listType = UI_LIST_UPDATE_FUNC;
  185.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_info_displayList, 
  186.           (caddr_t) &listUpdateFunc); 
  187.  
  188.     mItem =
  189.     XtCreateManagedWidget("select learning function", smeBSBObjectClass, 
  190.                   menu, NULL, ZERO);
  191.     sprintf(listLearnFunc.msg,"Select learning function");
  192.     listLearnFunc.unitPtr  = NULL;
  193.     listLearnFunc.widgetPtr= button;
  194.     listLearnFunc.listType = UI_LIST_LEARN_FUNC;
  195.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_info_displayList, 
  196.           (caddr_t) &listLearnFunc); 
  197.  
  198.     mItem =
  199.     XtCreateManagedWidget("select init function", smeBSBObjectClass, 
  200.                   menu, NULL, ZERO);
  201.     sprintf(listInitFunc.msg,"Select initialize function");
  202.     listInitFunc.unitPtr  = NULL;
  203.     listInitFunc.widgetPtr= button;
  204.     listInitFunc.listType = UI_LIST_INIT_FUNC;
  205.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_info_displayList, 
  206.           (caddr_t) &listInitFunc); 
  207.  
  208.     mItem =
  209.     XtCreateManagedWidget("jog weights", smeBSBObjectClass, 
  210.                   menu, NULL, ZERO);
  211.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_popupWeights, (caddr_t) UI_JOG);
  212.  
  213.     mItem =
  214.     XtCreateManagedWidget("edit f-types", smeBSBObjectClass, 
  215.                   menu, NULL, ZERO);
  216.     sprintf(listSiteFType.msg,"Edit f-type table");
  217.     listSiteFType.unitPtr  = NULL;
  218.     listSiteFType.widgetPtr= button;
  219.     listSiteFType.listType = UI_LIST_FTYPE_SITE;
  220.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_editPopup, 
  221.           (caddr_t) &listSiteFType);
  222.  
  223.     mItem =
  224.     XtCreateManagedWidget("edit sites", smeBSBObjectClass, 
  225.                   menu, NULL, ZERO);
  226.     sprintf(listSiteSite.msg,"Edit site table");
  227.     listSiteSite.unitPtr  = NULL;
  228.     listSiteSite.widgetPtr= button;
  229.     listSiteSite.listType = UI_LIST_SITE;
  230.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_editSitePopup, 
  231.           (caddr_t) &listSiteSite); 
  232. /*
  233.     mItem =
  234.     XtCreateManagedWidget("delete all patterns", smeBSBObjectClass, 
  235.                   menu, NULL, ZERO);
  236.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_rem_deleteAllPatternsProc, NULL);
  237.  
  238.     mItem =
  239.     XtCreateManagedWidget("clear SNNS", smeBSBObjectClass, 
  240.                   menu, NULL, ZERO);
  241.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_rem_deleteNet, NULL);
  242. */
  243.  
  244. #ifdef MASPAR_KERNEL
  245.     button =
  246.     ui_xCreateButtonItem("maspar", ui_remotePanel, button, stepLabel);
  247.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_masparPannel, (caddr_t) button);
  248. #endif
  249.  
  250. /********************************** PATTERN  ***************************/
  251.  
  252.     pattLabel = 
  253.     ui_xCreateLabelItem("PATTERN", ui_remotePanel,
  254.                 titelWidth, NULL, learnLabel);
  255.  
  256.     sprintf(buf,"%d",ui_noOfCurrentPattern);
  257.     ui_numberOfPatternWidget =
  258.     ui_xCreateDialogItem("patternNo", ui_remotePanel, buf, numberWidth, 
  259.                  pattLabel, learnLabel);
  260.  
  261.     button =
  262.     ui_xCreateButtonItem("delete", ui_remotePanel, 
  263.                  ui_numberOfPatternWidget, learnLabel);
  264.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_deletePatternProc, NULL);
  265.  
  266.     button =
  267.     ui_xCreateButtonItem("modify", ui_remotePanel, 
  268.                  button, learnLabel);
  269.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_modifyPatternProc, NULL);
  270.  
  271.     button =
  272.     ui_xCreateButtonItem("new", ui_remotePanel, button, learnLabel);
  273.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_newPatternProc, NULL);
  274.  
  275.     button =
  276.     ui_xCreateButtonItem("goto", ui_remotePanel, 
  277.                  button, learnLabel);
  278.     XtAddCallback(button, XtNcallback, (XtCallbackProc) ui_rem_moveInPatternsProc, (caddr_t) UI_JUMP);
  279.  
  280.     button =
  281.     ui_xCreateButtonItem("first", ui_remotePanel, button, learnLabel);
  282.     XtAddCallback(button, XtNcallback, 
  283.           (XtCallbackProc)ui_rem_moveInPatternsProc,(caddr_t) UI_FIRST);
  284.  
  285.     button =    
  286.     ui_xCreateButtonItem("prev", ui_remotePanel, button, learnLabel);
  287.     XtAddCallback(button, XtNcallback, 
  288.           (XtCallbackProc)ui_rem_moveInPatternsProc, 
  289.           (caddr_t) UI_PREVIOUS);
  290.  
  291.     button = ui_xCreateButtonItem("next", ui_remotePanel, button, learnLabel);
  292.     XtAddCallback(button, XtNcallback, 
  293.           (XtCallbackProc) ui_rem_moveInPatternsProc,(caddr_t) UI_NEXT);
  294.  
  295.     button = ui_xCreateButtonItem("last", ui_remotePanel, button, learnLabel);
  296.     XtAddCallback(button, XtNcallback, 
  297.           (XtCallbackProc)ui_rem_moveInPatternsProc, (caddr_t)UI_LAST);
  298.  
  299.     button = ui_xCreateButtonItem("subpat", ui_remotePanel, button, learnLabel);
  300.     XtAddCallback(button,XtNcallback,
  301.           (XtCallbackProc)ui_rem_defSubPat, (caddr_t)0);
  302.  
  303.  
  304. /*************************** SECOND PATTERN LINE  ***************************/
  305.  
  306.  
  307.     mButton = ui_xCreateMenuButtonItem("del",ui_remotePanel,
  308.                        ui_numberOfPatternWidget,pattLabel);
  309.  
  310.     REM_DFileMenu = XtCreatePopupShell("menu", simpleMenuWidgetClass, mButton,
  311.                       NULL, ZERO);
  312.  
  313.     if(PATTERN_SET_FILE[CURR_PATTERN_SET] != NULL){
  314.     for(i=0; i<NO_OF_PATTERN_SETS;i++){
  315.         DELPattFileWidget[i] = XtCreateManagedWidget(PATTERN_SET_FILE[i],
  316.                               smeBSBObjectClass,
  317.                               REM_DFileMenu,NULL,ZERO);
  318.         XtAddCallback(DELPattFileWidget[i], XtNcallback, 
  319.               (XtCallbackProc)ui_rem_delPattSet, (caddr_t)i);
  320.     }
  321.     }else{
  322.     DELPattFileWidget[0] = XtCreateManagedWidget("No Files",
  323.                              smeBSBObjectClass, 
  324.                              REM_DFileMenu,NULL,ZERO);
  325.     XtAddCallback(DELPattFileWidget[0], XtNcallback, 
  326.               (XtCallbackProc)ui_rem_delPattSet, (caddr_t)0);
  327.     }
  328.  
  329.     museButton = ui_xCreateMenuButtonItem("use",ui_remotePanel,mButton,
  330.                       pattLabel);
  331.  
  332.     REM_UFileMenu = XtCreatePopupShell("menu",simpleMenuWidgetClass,museButton,
  333.                       NULL, ZERO);
  334.  
  335.     if(PATTERN_SET_FILE[CURR_PATTERN_SET] != NULL){
  336.     for(i=0; i<NO_OF_PATTERN_SETS;i++){
  337.         USEPattFileWidget[i] = XtCreateManagedWidget(PATTERN_SET_FILE[i],
  338.                               smeBSBObjectClass,
  339.                               REM_UFileMenu,NULL,ZERO);
  340.         XtAddCallback(USEPattFileWidget[i], XtNcallback, 
  341.               (XtCallbackProc)ui_rem_usePattSet, (caddr_t)i);
  342.     }
  343.     sprintf(buf,"%s",PATTERN_SET_FILE[CURR_PATTERN_SET]);
  344.     }else{
  345.     USEPattFileWidget[0] = XtCreateManagedWidget("No Files",
  346.                              smeBSBObjectClass, 
  347.                              REM_UFileMenu,NULL,ZERO);
  348.     XtAddCallback(USEPattFileWidget[0], XtNcallback, 
  349.               (XtCallbackProc)ui_rem_usePattSet, (caddr_t)0);
  350.     sprintf(buf,"Patternfile ?");
  351.     }
  352.  
  353.     ui_showPattFile = ui_xCreateLabelItem(" ", ui_remotePanel, 
  354.                       12*8, museButton, pattLabel);
  355.     ui_xSetLabel(ui_showPattFile, buf);
  356.  
  357.  
  358.     mButton =
  359.     ui_xCreateMenuButtonItem("show",ui_remotePanel,ui_showPattFile,
  360.                  pattLabel);
  361.  
  362.     menu = 
  363.     XtCreatePopupShell("menu", simpleMenuWidgetClass, mButton, NULL, ZERO);
  364.  
  365.     entry =
  366.     XtCreateManagedWidget("none", smeBSBObjectClass, menu,
  367.                   NULL, ZERO);
  368.     XtAddCallback(entry, XtNcallback, (XtCallbackProc) 
  369.           ui_rem_showModeProc, (caddr_t) OUTPUT_NOTHING);
  370.     entry =
  371.     XtCreateManagedWidget("output", smeBSBObjectClass, menu,
  372.                   NULL, ZERO);
  373.     XtAddCallback(entry, XtNcallback, 
  374.           (XtCallbackProc) ui_rem_showModeProc, (caddr_t) OUTPUT_OUT);
  375.  
  376.     entry =
  377.     XtCreateManagedWidget("activation", smeBSBObjectClass, menu,
  378.                   NULL, ZERO);
  379.     XtAddCallback(entry, XtNcallback, 
  380.           (XtCallbackProc) ui_rem_showModeProc, (caddr_t) OUTPUT_ACT);
  381.  
  382.     ui_showModeLabel =
  383.     ui_xCreateLabelItem(" ", ui_remotePanel,nameWidth, mButton,pattLabel);
  384.     ui_rem_showModeProc(NULL, ui_patternLoadMode, NULL); /* initial value */
  385.  
  386.  
  387.  
  388. /********************************** LEARN PARAMETER *********************/
  389.  
  390.     learn2Label = 
  391.     ui_xCreateLabelItem("LEARN", ui_remotePanel,
  392.                 titelWidth, NULL, mButton);
  393.  
  394.     for (i=0; i<UI_NO_LEARN_PARAMS; i++) {
  395.     sprintf(buf,"%6.4f",ui_learnParameters[i]);
  396.     ui_cutTrailingZeros(buf);
  397.     ui_learnParameterWidgets[i] =
  398.         ui_xCreateDialogItem("learnParameter", ui_remotePanel,
  399.                  buf, numberWidth, 
  400.                  i==0?learn2Label:ui_learnParameterWidgets[i-1],
  401.                  mButton);
  402.     }
  403.  
  404.  
  405. /*****************************  UPDATE PARAMETER  ************************/
  406.  
  407.     updateLabel =
  408.     ui_xCreateLabelItem("UPDATE", ui_remotePanel,
  409.                titelWidth, NULL,  learn2Label);
  410.  
  411.     for (i=0; i<UI_NO_LEARN_PARAMS; i++) {
  412.     sprintf(buf,"%6.4f",ui_updateParameters[i]);
  413.     ui_cutTrailingZeros(buf);
  414.     ui_updateParameterWidgets[i] =
  415.         ui_xCreateDialogItem("updateParameter", ui_remotePanel,
  416.                  buf, numberWidth, 
  417.                  i==0 ? updateLabel : ui_updateParameterWidgets[i-1], 
  418.                  learn2Label);
  419.     }
  420.  
  421. /***************************************************************************/
  422.  
  423.  
  424.     XawFormDoLayout(ui_remotePanel, True);
  425.     ui_remoteIsCreated = TRUE;
  426. }
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436. /* end of file */
  437. /* lines: 401 */
  438.